package great.project.easyexcel.mock;

import great.project.easyexcel.easyexcel.bo.ExcelErrorMessage;
import great.project.easyexcel.easyexcel.bo.ExcelProgress;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * <div  style="border:2px solid none;margin:20px;padding:15px;font-size:24px;text-align:center;color:aqua;">
 *
 *  进度模拟 ， 这个只是用来展示能用的 ， 最好使用redis
 *
 *  </div>
 *
 * @author zhangshun
 * @date 2020/12/10 16:38
 */
@Component
public class ProcessMock {

    /**
     *  进度存储 （正常情况下需要存到 redis 中， 如果存储到这里的话 ， 没有办法模拟真实的内存消耗）
     */
    public  final  Map<String, ExcelProgress> processMap = new ConcurrentHashMap<>();

    /**
     *  错误信息 map 同上使用时 ， 将改类的所有内容 重新成持久化的方式
     */
    public  final  Map<String, List<ExcelErrorMessage>> errorMessageMap = new ConcurrentHashMap<>();


    /**
     *  更新 导入进度
     * @param processKey 进程key
     * @param excelProgress 进度
     */
    public void updateProcess(String processKey , ExcelProgress excelProgress){
        processMap.put(processKey, excelProgress);
    }


    public void addErrorMessages(String processKey , List<ExcelErrorMessage> messageList){

        List<ExcelErrorMessage> excelErrorMessages = errorMessageMap.get(processKey);
        List<ExcelErrorMessage> list = new ArrayList<>(messageList);
        if (excelErrorMessages != null) {
            list.addAll(excelErrorMessages);
        }
        errorMessageMap.put(processKey, list);


    }

    /**
     *  获取进度
     * @param processKey 进度key
     * @return 结果
     */
    public ExcelProgress getProcess (String processKey){
        return processMap.get(processKey);
    }


    public List<ExcelErrorMessage> getErrorMessages(String processKey){
        return errorMessageMap.get(processKey);
    }

}
